package co.gov.medellin.ssti.sub.model.service.impl;

import java.io.UnsupportedEncodingException;
import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import co.gov.medellin.ssti.sub.model.dao.CargueDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.service.CargueService;
import co.gov.medellin.ssti.sub.model.vo.CargueVO;
import co.gov.medellin.ssti.sub.model.vo.RegNoProcesadosVO;

@Service
public class CargueServiceImpl implements CargueService {
	@Autowired
	CargueDAO cargueDAOImpl2;

	public Collection<CargueVO> findArchivoCargueByCriteria(CargueVO criteria) {
		try {
			return cargueDAOImpl2.findArchivoCargueByCriteria(criteria);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String[] findTotalRegistrosByCodigoLote(String codeLote) {
		try {
			return cargueDAOImpl2.findTotalRegistrosByCodigoLote(codeLote);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public String[] ingresarCargue(CargueVO criterea, String user,
			String terminal, String fecha) {
		try {
			return cargueDAOImpl2.ingresarCargue(criterea, user, terminal,
					fecha);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean validateDelete(Long codeUser, String nameUser,
			String groupUserName, String codeLote) {
		try {
			return cargueDAOImpl2.validateDelete(codeUser, nameUser,
					groupUserName, codeLote);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int uploadFile(int codeLoteCargue, byte[] fileData)
			throws UnsupportedEncodingException {
		try {
			return cargueDAOImpl2.uploadFile(codeLoteCargue, fileData);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean moveToCargarDatos(int codeLoteCargue, String tipoCargue,
			String user, String terminal, String userGroup, String userCode) {
		try {
			return cargueDAOImpl2.moveToCargarDatos(codeLoteCargue, tipoCargue,
					user, terminal, userGroup, userCode);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public boolean deleteFile(int codeLoteCargue) {
		try {
			return cargueDAOImpl2.deleteFile(codeLoteCargue);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public Collection<RegNoProcesadosVO> findRegistrosNoProcesados(String lote,
			String tipo) {
		try {
			return cargueDAOImpl2.findRegistrosNoProcesados(lote, tipo);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	public int deleteCargue(String codeLote) {
		try {
			return cargueDAOImpl2.deleteCargue(codeLote);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

	@Override
	public int deleteCargueEmpresa(String codeLote) {
		try {
			return cargueDAOImpl2.deleteCargueEmpresa(codeLote);
		} catch (Exception e) {
			throw new DAOException(e);
		}
	}

}
